home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / uio.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  67 lines

  1. #ifndef __LINUX_UIO_H
  2. #define __LINUX_UIO_H
  3.  
  4. #include <linux/compiler.h>
  5. #include <linux/types.h>
  6.  
  7. /*
  8.  *    Berkeley style UIO structures    -    Alan Cox 1994.
  9.  *
  10.  *        This program is free software; you can redistribute it and/or
  11.  *        modify it under the terms of the GNU General Public License
  12.  *        as published by the Free Software Foundation; either version
  13.  *        2 of the License, or (at your option) any later version.
  14.  */
  15.  
  16.  
  17. /* A word of warning: Our uio structure will clash with the C library one (which is now obsolete). Remove the C
  18.    library one from sys/uio.h if you have a very old library set */
  19.  
  20. struct iovec
  21. {
  22.     void __user *iov_base;    /* BSD uses caddr_t (1003.1g requires void *) */
  23.     __kernel_size_t iov_len; /* Must be size_t (1003.1g) */
  24. };
  25.  
  26. #ifdef __KERNEL__
  27.  
  28. struct kvec {
  29.     void *iov_base; /* and that should *never* hold a userland pointer */
  30.     size_t iov_len;
  31. };
  32.  
  33. #endif
  34.  
  35. /*
  36.  *    UIO_MAXIOV shall be at least 16 1003.1g (5.4.1.1)
  37.  */
  38.  
  39. #define UIO_FASTIOV    8
  40. #define UIO_MAXIOV    1024
  41. #if 0
  42. #define UIO_MAXIOV    16    /* Maximum iovec's in one operation 
  43.                    16 matches BSD */
  44.                                 /* Beg pardon: BSD has 1024 --ANK */
  45. #endif
  46.  
  47. /*
  48.  * Total number of bytes covered by an iovec.
  49.  *
  50.  * NOTE that it is not safe to use this function until all the iovec's
  51.  * segment lengths have been validated.  Because the individual lengths can
  52.  * overflow a size_t when added together.
  53.  */
  54. static inline size_t iov_length(const struct iovec *iov, unsigned long nr_segs)
  55. {
  56.     unsigned long seg;
  57.     size_t ret = 0;
  58.  
  59.     for (seg = 0; seg < nr_segs; seg++)
  60.         ret += iov[seg].iov_len;
  61.     return ret;
  62. }
  63.  
  64. unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to);
  65.  
  66. #endif
  67.